﻿using blackhouse.BlackApart.Business.Furnitures;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace blackhouse.BlackApart.Business.Apartments {
	public class DecoratedApartmentGroup : IApartmentGroup {

		#region Fields

		private IApartmentGroup decoratedObject;

		#endregion

		#region Properties

		public int Id {
			get { return this.decoratedObject.Id; }
		}

		public string Name {
			get { return this.decoratedObject.Name; }
			set { this.decoratedObject.Name = value; }
		}

		public string ShortName {
			get { return this.decoratedObject.ShortName; }
			set { this.decoratedObject.ShortName = value; }
		}

		public int NumberOfPeople {
			get { return this.decoratedObject.NumberOfPeople; }
			set { this.decoratedObject.NumberOfPeople = value; }
		}

		public IApartmentLocation DefaultLocalization {
			get { return this.decoratedObject.DefaultLocalization; }
			set { this.decoratedObject.DefaultLocalization = value; }
		}

		public float AreaSize {
			get { return this.decoratedObject.AreaSize; }
			set { this.decoratedObject.AreaSize = value; }
		}

		public double Popularity {
			get { return this.decoratedObject.Popularity; }
			set { this.decoratedObject.Popularity = value; }
		}

		public float Stars {
			get { return this.decoratedObject.Stars; }
			set { this.decoratedObject.Stars = value; }
		}

		public IApartmentPhoto MainPhoto {
			get { return this.decoratedObject.MainPhoto; }
			set { this.decoratedObject.MainPhoto = value; }
		}

		public DateTime LastMod {
			get { return this.decoratedObject.LastMod; }
			set { this.decoratedObject.LastMod = value; }
		}

		public ApartmentOptionField[] Fields {
			get { return this.decoratedObject.Fields; }
			set { this.decoratedObject.Fields = value; }
		}

        public string LidDescription {
            get { return this.decoratedObject.LidDescription; }
        }

        public string Description {
            get { return this.decoratedObject.Description; }
        }

        public string Url {
            get {                return this.decoratedObject.Url;            }
            set {                this.decoratedObject.Url = value;            }
        }

        public Guid Guid {
            get {                return this.decoratedObject.Guid;            }
            set {                this.decoratedObject.Guid = value;            }
        }

		#endregion

		#region Constructors

		public DecoratedApartmentGroup(IApartmentGroup decoratedApartmentGroup) {
			this.decoratedObject = decoratedApartmentGroup;
		}

		#endregion

		#region Methods

		public bool Save() {
			return this.decoratedObject.Save();
		}

		public bool Delete() {
			return this.decoratedObject.Delete();
		}

		public bool Exists() {
			return this.decoratedObject.Exists();
		}

		public IApartment MakeDefaultApartment() {
			return this.decoratedObject.MakeDefaultApartment();
		}

		public IApartment[] GetApartments() {
			return this.decoratedObject.GetApartments();
		}

		public IApartmentGroup[] GetAllApartmentTypes() {
			return this.decoratedObject.GetAllApartmentTypes();
		}

		public object GetProperty(string propertyKey) {
			return this.decoratedObject.GetProperty(propertyKey);
		}

		public Dictionary<string, string> GetArrayProperty(string propertyKey) {
			return this.decoratedObject.GetArrayProperty(propertyKey);
		}

		public Seo GetSeo() {
			return this.decoratedObject.GetSeo();
		}

        public IApartmentPhoto[] GetAllPhotos() {
            return this.decoratedObject.GetAllPhotos();
        }

        public IFurniture[] GetFurnitures() {
            return this.decoratedObject.GetFurnitures();
        }

		#endregion

    }
}
